在前面的章節講了這麼多次,今天終於要來提到Artisan command了,什麼是Artsian Command呢?
是 Laravel 裡的一個指令列介面的名稱,提供了許多指令來幫助你開發,也可以自訂需要的指令
php artisan list
: 列出所有可以使用的 Artisan 指令,可以先用這個看看目前有什麼指令
php artisan help {command}
: 列出command的細節,包含描述,可以使用的參數及選項
laravel提供的範例 php artisan help migrate 可以直接用group名稱,不過其他大部分的都會需要比較完整的指令名稱,例如
php artisan help queue:listen
(只用queue的話會出現錯誤)
php artisan {command}
: 執行指令動作 (參數跟選項依指令決定要不要加)Step 1: php artisan make:command $name
下指令或是自己建立都可以,建議下指令,因為他也是有預設一些值,會比較方便。建立的檔案位置會在 app/Console/Commands
(其中name是檔案名稱)
(5.2之前的版本是 make:console
)
下指令最後可以帶入 --command=${欲使用的終端指令名稱},沒帶入的話沒關係,可以在檔案內的$signature變數改設定值
Step2: 編輯檔案
5.3 之後還有提供 Closure Commands 的方式可以使用
<?php
namespace App\Console\Commands;
use App\User;
use App\DripEmailer;
use Illuminate\Console\Command;
class SendEmails extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'email:send {user} {--queue}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Send drip e-mails to a user';
/**
* The drip e-mail service.
*
* @var DripEmailer
*/
protected $drip;
/**
* Create a new command instance.
*
* @param DripEmailer $drip
* @return void
*/
public function __construct(DripEmailer $drip)
{
parent::__construct();
$this->drip = $drip;
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$this->drip->send(User::find($this->argument('user')));
}
}
protected $signature = 'email:send {user} {--queue}';
像這樣下指令的時候就是 php artsian email:send 123
或是 php artsian email:send 123 --queue
參數 通常是必須,選項 可不填,都可設定多個
user 代表的是指令需要帶入的參數,以下還有幾種寫法(跟route類似)
*
代表輸入的要是陣列:
加入敘述選項:關鍵字是 --
,以下還有幾種寫法
|
給予簡寫*
}: *
代表輸入的要是陣列:
加入敘述